package cn.virens.web.common;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.ui.Model;

import cn.virens.database.mysql.model.sys.SysUser;
import cn.virens.database.service.sys.SysUserService;

/**
 * 通用控制器-后台
 * 
 * @文件 :BaseJqGridController.java
 * @作者 :cn.loioi
 * @创建时间 :2016年10月13日 下午1:10:43
 */
public class BaseUserController extends BaseJSONController {
	protected String _identity;
	protected @Resource SysUserService sysUserService;

	protected BaseUserController() {
		super();
	}

	/**
	 * @param baseTemplateUrl 模板根路径
	 */
	protected BaseUserController(String baseTemplateUrl) {
		super(baseTemplateUrl);
	}

	/**
	 * @param baseTemplateUrl 模板根路径
	 * @param identity 顶层标示
	 */
	protected BaseUserController(String baseTemplateUrl, String identity) {
		super(baseTemplateUrl);
		this._identity = identity;
	}

	/**
	 * 获取当前登录的用户
	 * 
	 * @param request
	 * @return
	 */
	protected final SysUser getUser(HttpServletRequest request) {
		SysUser result = getAttribute(request, "_user", SysUser.class);
		if (result == null) {
			result = sysUserService.getUser(getAccount(request));

			this.setAttribute(request, "_user", result);
		}

		return result;
	}

	/**
	 * 获取当前登录用户的账号
	 * 
	 * @param request
	 * @return
	 */
	protected final String getAccount(HttpServletRequest request) {
		return String.valueOf(getSubject(request).getPrincipal());
	}

	/**
	 * 添加当前页面的标识
	 * 
	 * @param url
	 * @param model
	 * @return
	 */
	protected final String returnUrl(String url, Model model) {
		model.addAttribute("identity", _identity);

		return returnUrl(url);
	}
}
